package com.egao.common.module.company.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.MutualApply;
import com.egao.common.module.company.entity.vo.MutualApplyFormVO;
import com.egao.common.module.company.entity.vo.MutualApplyListVO;
import com.egao.common.module.company.entity.vo.MutualFormVO;

import java.util.List;

/**
 * 双选会申请记录(MutualApply)表服务接口
 *
 * @author dl
 * @since 2021-02-24 13:52:35
 */
public interface MutualApplyService extends IService<MutualApply> {

    /**
     * 双选会列表查询
     * @param pageParam 分页对象
     * @return PositionListVO 双选会列表VO
     */
    List<MutualApplyListVO> listPage(PageParam<MutualApplyListVO> pageParam);

    /** 
     * 获取最大号牌
     * @param mutualId 双选会
     * @return 
     */
    Integer getMaxNumberPlate(Integer mutualId);

    /**
     * 添加报名双选会信息
     * @param mutualApplyFormVO 双选会申请表单
     * @return
     */
    JsonResult saveMutualApply(MutualApplyFormVO mutualApplyFormVO);

    /**
     * 修改报名双选会信息
     * @param mutualApplyFormVO 双选会申请表单
     * @return
     */
    JsonResult updateMutualApply(MutualApplyFormVO mutualApplyFormVO);
    /**
     * 取消报名双选会信息
     * @param mutualApplyFormVO 双选会申请表单
     * @return
     */
    JsonResult cancelMutualApply(MutualApplyFormVO mutualApplyFormVO);
    /**
     * 删除双选会信息
     * @param mutualApplyFormVO 双选会申请表单
     * @return
     */
    JsonResult deleteMutualApply(MutualApplyFormVO mutualApplyFormVO);
    /**
     * 检查是否可以报名
     * @param mutualFormVO 双选会报名信息
     * @return JsonResult 结果对象
     */
    JsonResult checkMutual(MutualFormVO mutualFormVO);
    /**
     * 获取双选会报名信息
     * @param id 报名编号
     * @return JsonResult 结果对象
     */
    JsonResult detail(Integer id);

    /**
     * 检查是否可以报名(门户)
     * @param mutualFormVO 双选会报名信息
     * @return JsonResult 结果对象
     */
    JsonResult applyMutual(MutualFormVO mutualFormVO);
    /**
     * 双选会会统计
     * @param pageParam 宣讲会表单
     * @return JsonResult 结果对象
     */
    JsonResult countMutual(PageParam<MutualApplyListVO> pageParam);

    /**
     * 重置取消报名
     * @param id 单位报名ID
     * @param loginUserId 操作人
     * @return
     */
    JsonResult resetCancel(Integer id, Integer loginUserId);

}